查看原文
其他

视野 | 苹果 WWDC 2024:向企业开发者开放 Vision Pro 主摄权限等 API

关注 XR 发展的 XR航海家
2024-08-23

引言:苹果将在 visionOS 2 中对企业用户开放包含主摄像头访问权限在内的多种 API,开发者可以更加自由地创建应用程序。本文整理自 WWDC 2024 开发者课程 Introducing enterprises APIs for visionOS

一起聊 visionOS 开发 加主理人(微信:xrvoyager)进讨论群
—————— · ——————
本文阅读时间约为 20 分钟
自从 Vision Pro 发布以来,我们一直在听取企业客户关于他们希望增加额外功能以构建真正改变业务方式的应用程序的反馈,我很高兴地介绍这些企业 API 即将为 Vision OS 带来的新功能。Vision Pro 可以帮助工作更轻松、更高效和更准确,包括新的增强型协作和通信的空间体验,创建指导工作活动以简化复杂任务,或启用以前不可能的新空间体验。今年我们将提供 6 种新的 API,为企业客户及其应用程序解锁令人兴奋的新功能。这些 API 虽然支持许多行业的广泛用途,但它们也比现有 API 具备更高维的设备功能访问权限。苹果相信隐私是一项基本权利,我们以隐私为设计考虑,确保它们只在适当的情况下使用。启动这些应用程序,需要一个受管理的授权以及与开发者账户相关联的许可文件;并且由于这些 API 仅用于企业用途,授权仅适用于专有的内部应用程序或为其他企业定制并通过 Apple Business Manager 私下分发给组织用户的应用程序。第一类是由提供增强传感器访问和改进 Vision Pro 视觉能力的 API 组成,包括访问主摄像头、改进的捕获和流媒体以及摄像头增强功能;第二类集中在平台控制,通过苹果神经引擎提供高级机器学习能力,增强的对象跟踪能力,以及调整应用程序性能以获得更密集工作负载的更多计算功能。今天我们将讨论这些类别中的 6 个新 API,它们是如何实现的,以及它们的示例用例。


应用终于能「看见」了

我们收到的最常见请求之一是获得对主摄像头的访问权限。有了这个新的 API,您现在可以看到 Vision Pro 周围的整个环境。这个 API 允许应用程序访问设备主摄像头的视频源,以在您的应用程序中使用。通过分析和解释这个源,然后根据看到的内容决定采取什么行动,许多增强的空间功能被解锁。产线上使用主摄像头源和计算机视觉算法进行异常检测,快速识别不符合质量标准的部件,并突出显示它们,以便用好的部件替换。有了主摄像头访问权限和有效的企业许可文件,我们可以使用 main-camera-access.allow API 获得视频源。确定方法调用后,我们可以设置核心变量。我们首先通过将支持的格式现在定义为 main 来设置 CameraFrameProvider,可以从主相机获得源,同时创建一个 ARKitSession 和一个 CVPixelBuffer 以便存储和显示源。我们确保请求用户对主摄像头访问的授权,然后将 CameraFrameProvider 传递到 ARKitSession 并运行它。我们可以通过请求 CameraFrameUpdates 来从 CameraFrameProvider 拉取视频帧,并将它们存储在变量中以访问。最后我们可以从样本中的 .left 值中接收到的每帧,因为我们使用的主相机是用户左侧的那一个;把它放入我们的 PixelBuffer,此时我们可以在应用程序中随意使用。访问主相机为企业应用程序解锁了如此多的潜力,我只是在这里强调了一些,但它有可能在各个行业中产生真正的影响。
接下来,让我们谈谈包括 passthrough 视频和屏幕截图。今天在 Vision Pro 中进行屏幕截图时,用户打开的所有窗口都被捕捉,但背景被移除,而不是有用户的周围环境的 passthrough 视频源。现在您可以捕捉和共享用户在 Vision Pro 中的整个视图,有了这个 API,我们正在将 visionOS 中的完整组合空间视图带到屏幕截图中,覆盖截图、截屏、镜像等多种场景。
为了在使用户隐私得到更好保护的同时捕捉用户的整个视图,包括打开的应用程序,此功能需要使用广播上传扩展(Broadcast Upload Extension)来接收源。visionOS 通过 Replay Kit 内置了广播功能,这意味着用户每次开始屏幕截图或共享时都需要特别使用系统的「开始广播」按钮。现场技术人员向办公室的专家打电话。他们可以分享他们实际的视图,包括 passthrough 相机和上面的 visionOS 窗口,然后与该专家免提工作,以获得与他们所经历的完全匹配的反馈。
我们使用 screen-capture.include-passthrough API,系统将自动用 passthrough 相机的视图替换通常的黑色背景,一键实现「身临其境」功能。有了这个 API,应用程序可以提供远程调试的能力,增加了专家在不同场景中提供帮助的数量。

最后,有关空间条形码和二维码扫描。Vision Pro 现在可以自动检测和解析条形码和二维 码,允许基于这些图形码的自定义应用程序功能。当检测二维码或条形码时,应用程序会收到有关检测到的代码类型、其相对于用户的立体位置以及该代码的有效载荷内容的信息。作为一个例子,工人在仓库中检索请求的项目时,只需看一下包裹的条形码就可以验证他们正在寻找的正确物品,不再需要依赖手识别或携带扫描器。
我们设置 ARKitSession 并确保我们启用了世界感知(worldSensing)权限,然后我们启用一个新的 visionOS 变量 BarcodeDetectionProvider。就像现有的手部检测能力一样,这将处理查找和跟踪图形码信息。然后启动 ARKitSession 连接到 BarcodeDetectionProvider,当 API 检测到新代码时将发送更新并添加事件,例如我们可以在检测到二维码时突出显示,当二维码的位置移动时更新事件,再也看不到二维码时清理事件

我想分享一个简短的演示,展示这些新 API 如何被用来创建以前不可能的体验。我试图组装一个新的电子组件但未能成功,需要来自我们支持中心的朋友 Levine 的帮助。幸运的是,我通过企业支持中心应用程序,可以在这些情况下获得实时帮助。Levine 想看看我正在做什么,要求我通过点击启用相机共享来启用我的相机。我可以在窗口中预览它,这样我就知道我把什么分享出去了。看起来这不是一个容易识别的工具,所以 Levine 想看看套件的说明。我点击应用程序中的启用条形码扫描,然后拿起盒子,看看侧面的代码,系统就会自动识别条形码的信息并发送给对方。接下来他要求我与他共享我的整个屏幕,他就可以真正看到我的视野。为了做到这一点,我点击共享全视图,选择菜单中的应用程序名称,然后点击开始广播。Levine 的视图中,可以看到他的支持中心页面中显示了我的整个视图。他看到我没有完成将一根线连接到 45 号引脚的最后一步。我连接好,状态灯变绿后故障排除,Levine 就可以退出程序。

平台开放更进一步

首先是为 Vision Pro 提供访问设备上的神经引擎权限。这允许通过苹果神经引擎在设备上执行机器学习任务,而不是默认的传统 CPU 和 GPU。这增强了 Vision Pro 现有的 Core ML 功能,允许设备运行需要或通过访问苹果神经引擎得到增强的模型。例如为了实现缺陷产品识别等功能,客户可能会需要自定义机器学习模型进行异常检测,该模型需要苹果神经引擎才能在设备上完全运行。Core ML 将根据多种因素动态决定模型最有效地运行的处理单元,包括设备上的当前资源使用情况、可用的计算设备以及您的模型的特定需求,并将模型计算直接指向那里。可以调用 neural-engine-access API 允许模型使用神经引擎,为了在您的代码中验证您是否拥有苹果神经引起的访问权限,可以使用如上的代码片段,查看 ML 模型类的 availableComputeDevices 返回结果,然后根据结果采取行动。如果合适,系统将在使用模型时利用神经引擎;如果不可用或效率不高,则将回退到 GPU 和 / 或 CPU 进行计算。

接下来,让我们谈谈通过参数调整增强已知对象跟踪。已知对象跟踪是 visionOS 2.0 中的一个新功能,允许应用程序在项目中内置特定参考对象,可以在其视图中检测和跟踪这些对象。我们通过可配置的参数允许调整和优化此对象跟踪,以最好地适应他们的用例,包括更改一次跟踪的最大对象数量,更改静态对象和动态对象的跟踪速率。

这个 API 需要同等的基准计算能力。因此,为了充分利用增加的一个或多个参数以最好地适应您的用例,可能需要减少其他参数以平衡计算需求并保持系统健康,同时提供您在应用程序中寻找的功能。

这可以用于为复杂维修环境构建的应用程序中,需要跟踪和使用各种工具和零件,允许技术人员按照指导说明在机器上更换零件,这些说明增强了存储的大量相关对象的知识,突出显示它们在维修期间需要时的位置。那么在实践中这是什么样子的呢?非常简单,真的。

我们使用 object-tracking-provider-adjustment.allow API 设置对象跟踪代码。首先设置跟踪配置,然后在配置变量上设置新目标值,比如将最大跟踪对象设置为从默认的 10 个增加到 15 个。然后我们设置一个 ObjectTrackingProvider,传入我们想要查找的参考对象以及我们的自定义跟踪配置。我们就像使用所有已知对象跟踪一样设置这些参考对象。然后启动 ARKitSession如果需要一次跟踪大量不同的对象,或者需要比默认检测率更精细的跟踪,我们的这些参数完全可以灵活满足客户的需求,允许调整以创建最佳体验。

最后,我们可以调整应用程序设置以增加性能这些新企业 API 允许客户将他们的应用程序和设备推向极限,因此我们可以解放更多设备的性能。开发人员可以在 Vision Pro 设备上获得更多的计算能力,以允许风扇运行得更快一些,即使换取更多的环境噪音。

为了在任何重负载下保持系统平稳运行,开发人员需要在默认设置中平衡计算能力和热使用、电池寿命和用户舒适度。Vision Pro 已经调整了这三个方面的最佳平衡,以适应大多数用例。然而这个接口允许增加 CPU 和 GPU 的计算能力,以换取其他两个方面的轻微减少,如果这种权衡对企业的特定目的有意义。客户就可以真正榨干 Vision Pro 中的每一点性能,并解锁他们企业应用程序的全部潜力。例如客户可能想要在他们的空间中加载并围绕它走动,来审查一个高度复杂、高保真的三维设计,并发现通过调整性能设置,渲染和性能得到了改善。

只需调用 app-compute-category API,系统将自动知道它有能力利用增强的计算能力,并根据需要运行风扇以保持设备平稳运行。该设置是应用程序范围的,不通过应用程序代码中的特定方法暴力打开,系统将在需要时自动调整 CPU 和 GPU 的功耗和风扇。因此即使场景类似,根据机器的实际体验可能会有所不同。


最后让我们谈谈在 visionOS 上实现新企业 API 时的最佳实践。始终注意环境安全,确保使用 Vision Pro 的人处于一个可以安全地穿着设备进行所有工作的地方。调查现有的 API,确保您特定用例所需的功能尚未被现有 SDK 覆盖。只请求您的应用程序所需的特定授权。我们希望确保开发人员拥有实现其企业应用程序开发目标所需的一切,同时牢记用户隐私和目的限制。最后,确保员工隐私,特别是提供直接访问主摄像头源的 API。它创建了需要在您的工作场所和员工中考虑的场景。确保您正在构建的正是您企业需求所需的,同时尊重工作环境中那些人的隐私。

这就是对 Vision OS 企业 API 的简要概述,它们将帮助您弥补对完美空间计算应用的想象和现实之间的差距。这些 API 为增强的传感器访问以及改进的平台控制解锁了强大的新功能。



—————— · ——————

继续滑动看下一个
XR航海家
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存